#ifndef KALMAN_H_
#define KALMAN_H_

#include "stm32f10x.h"

// 定义卡尔曼滤波器结构体
typedef struct
{
    float x; // 状态估计值
    float p; // 估计值的不确定性
    float q; // 过程噪声协方差
    float r; // 测量噪声协方差
    float k; // 卡尔曼增益
} _st_KalmanFilter;

// 定义低通滤波器结构体
typedef struct
{
    float factor; // 当前输入数据对滤波结果的影响
    float x;      // 状态估计值
} _st_LowPassFilter;

// 初始化卡尔曼滤波器
void kalman_init(_st_KalmanFilter *pKF, float initial_x, float initial_p, float q, float r);
// 卡尔曼滤波预测步骤
void kalman_predict(_st_KalmanFilter *pKF);
// 卡尔曼滤波更新步骤
void kalman_update(_st_KalmanFilter *pKF, float measurement);
// 初始化低通滤波器
void lowPass_init(_st_LowPassFilter *pLPF, float factor);
// 低通滤波更新步骤
void lowPass_update(_st_LowPassFilter *pLPF, float measurement);

#endif /*KALMAN_H_*/
